package Map;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * Map的遍历
 * 三种方式：
 * 1. 键的遍历key
 * 2. 值的遍历value
 * 3. 键值对的遍历entry
 */
public class MapDemo2 {
    public static void main(String[] args) {
        //
        Map<String,Integer> map=new HashMap<>();
        map.put("语文",100);
        map.put("英语",100);
        map.put("数学",100);
        map.put("物理",100);
        map.put("化学",100);
        System.out.println(map);
        //put get remove clear size isEmpty containsKey containsValue
        //对map 集合的遍历
        // 1. 键的遍历key
        /*
        遍历所有的key
        Set <K> keySet();
        将当前Map 中的所有的Key 以一个Set 集合的形式返回
         */
        Set<String> keySet =map.keySet();
        for (String key:keySet){
            System.out.println("key:"+key);
        }
        System.out.println(keySet);

        //2. 遍历每一组键值对------entry
        /*
        遍历所有的键值对
        Set<Map.Entry<K,V>> entrySet();
        将当前Map 中的所有的键值对 以一个Set 集合的形式返回
         */
        //-----数据类型
        Set<Map.Entry<String,Integer>> entrySet =map.entrySet();
        for (Map.Entry<String,Integer> e:entrySet){
            String key=e.getKey();
            Integer valur=e.getValue();
            System.out.println(key+":"+valur);
        }
        //3. 值遍历value
        /*
        遍历所有的value
        Collection<V> values();
        将当前Map 中的所有的value 以一个Collection 集合的形式返回
         */
        Collection<Integer> values=map.values();
        for (Integer value:values){
            System.out.println("value:"+value);
        }
        // forEach 遍历, 在JDK1.8后，集合和Map集合都提供了foreach遍历方法

        values.forEach((value)->{
            System.out.println("value:"+value);
        });
        values.forEach(e-> System.out.println(e));
        values.forEach(System.out::println);
        //:: 方法引用  当前方法参数和被引用的方法参数一致时，可以使用方法引用
        map.forEach((k,v)-> System.out.println(k+":"+v));
        //因为键值对遍历，所以是2个参数，不能用方法引用


    }
}
